//
//  AppDelegate.swift
//  3月5的项目
//
//  Created by 哦哦 on 16/3/5.
//  Copyright © 2016年 itcast. All rights reserved.
//

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    
    var window: UIWindow?
    
    
    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        //UserAccount().loadUserInfo()
        //测试
        //        UserAccount.shareAccount.loadUserInfo()
        //设置全局颜色
        setThemeColor()
        //注册通知
        registerNotification()
        
        //需要手动实例化window
        window = UIWindow(frame: UIScreen.mainScreen().bounds)
        
        window?.backgroundColor = UIColor.whiteColor()
        //设置根视图控制器
        //        window?.rootViewController = WelcomeViewController()
        defaultRootViewController()
        //可视化window
        window?.makeKeyAndVisible()
        
        return true
    }
    
    //设置根视图控制器
    //判断用户是否登录  用户登录显示欢迎页面 用户未登录 显示访客视图
    private func defaultRootViewController(){
        let rootVC = UserAccount.shareAccount.userLogin ? WelcomeViewController() : MainViewController()
        //        let rootVC = UserAccount.shareAccount.userLogin ?MainViewController(): WelcomeViewController()
        window?.rootViewController = rootVC
        
    }
    
    
    
    private func setThemeColor(){
        
        //设置导航条的主题色 一经设置  全局有效
        //设置全局色 需要注意: 全局颜色的设置 必须在控件实例化之前设置  要提前设置
        //appearance出现
        UINavigationBar.appearance().tintColor = themeColor
        //        UITabBar.appearance().tintColor = themeColor
        
    }
    //通知的监听方法 一般会带一个参数
    @objc private func changeRootVC (n: NSNotification) {
        
        //如果object 不为nil(oauth) 根视图控制器应该是 Welcome
        //如果为nil  根视图控制器就应该是 MainViewController
        window?.rootViewController = (n.object == nil) ? MainViewController() : WelcomeViewController()
        
    }
    
    
    //监听的方法没有实现
    private func registerNotification (){
        
        //注册通知
        //object: 关注谁发出的通知  如果为 nil  就是所有对象发出的通知都可以接受
        // 通知(object 不为 nil 表示的是通知) 广播(object 为nil)
        //方法 有参数要添加冒号  不然报错 未实例化 提示发通知post方法
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "changeRootVC:", name: SwitchRootViewController, object: nil)
        
        
    }
    
    //移除通知 只有程序退出才会被调用
    //编码规范而已
    deinit {
        
        NSNotificationCenter.defaultCenter().removeObserver(self)
        
    }
    
    
    
    
}

